#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>

int main(int argc,char *argv[])
{
	if(argc!=2) exit(1);
//	printf("stdin:%d\n",stdin->_fileno);
//	printf("stdout:%d\n",stdout->_fileno);
//	printf("stderr:%d\n",stderr->_fileno);


//	close(1);

	//int fd = open("log.txt",O_CREAT | O_WRONLY | O_TRUNC,0666);
	//int fd = open("log.txt",O_CREAT | O_WRONLY | O_APPEND,0666);
	int fd = open(argv[1],O_RDONLY);
	if(fd<0) exit(1);

	dup2(fd,0);
	close(fd);
	
	while(1)
	{
		char buffer[64];
		if(!fgets(buffer,sizeof(buffer),stdin)) break;
		printf("%s",buffer);
	}

//	printf("fd:%d\n",fd);
//	printf("hello lcp\n");
//	printf("hello lcp\n");
//	printf("hello lcp\n");
//	fprintf(stdout,"hello stdout\n");
//	fprintf(stdout,"hello stdout\n");
//	fprintf(stdout,"hello stdout\n");
//	fprintf(stdout,"hello stdout\n");

//	const char *msg = "hello world\n";
//	write(fd,msg,strlen(msg));
//	int fd1 = open("log1.txt",O_CREAT | O_WRONLY | O_TRUNC,0666);
//	int fd2 = open("log2.txt",O_CREAT | O_WRONLY | O_TRUNC,0666);
//	int fd3 = open("log3.txt",O_CREAT | O_WRONLY | O_TRUNC,0666);
//	int fd4 = open("log4.txt",O_CREAT | O_WRONLY | O_TRUNC,0666);
//	
//	if(fd1 < 0) exit(1);
//	if(fd2 < 0) exit(1);
//	if(fd3 < 0) exit(1);
//	if(fd4 < 0) exit(1);
//
//	printf("fd1:%d\n",fd1);
//	printf("fd2:%d\n",fd2);
//	printf("fd3:%d\n",fd3);
//	printf("fd4:%d\n",fd4);
//
//	close(fd1);
//	close(fd2);
//	close(fd3);
//	close(fd4);
//	//int fd = open("log.txt",O_CREAT | O_WRONLY | O_TRUNC,0666);//清空并写入
//	//int fd = open("log.txt",O_CREAT | O_WRONLY | O_APPEND,0666);//追加并写入
//	int fd = open("log.txt",O_RDONLY);//清空并写入
//	if(fd <  0)
//	{
//		perror("open error!\n");
//		return 1;
//	}
//
//	printf("fd: %d\n",fd);
//
//	while(1)
//	{
//		char buffer[64];
//		int n = read(fd,buffer,sizeof(buffer)-1);
//		if(n > 0)
//		{
//			buffer[n]=0;
//			printf("%s",buffer);
//		}
//		else if(n == 0)
//		{
//			break;
//		}
//	}
//
	////const char *msg = "good good study!\n";
	//int cnt = 1;
	//int a = 1234567;
	//while(cnt--)
	//{
	//	//Write as characters ---
	//	char buffer[16];
	//	snprintf(buffer,sizeof(buffer),"%d",a);
	//	write(fd,buffer,sizeof(buffer));
	//}

//	close(fd);
	return 0;
}
